package cn.lanqiao.common.utils;

import org.apache.commons.io.FileUtils;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.UUID;

/**
 * @author Marisa
 * @description 文件工具类
 * @date 2022/3/31
 */
public class FileUtil {

    /**
     * 创建一个文件
     * @param inputStream   输入流
     * @param name          文件名
     * @param ext           文件类型
     * @param tmpDirFile    文件生成路径
     * @return              结果
     * @throws IOException  可能发生的异常
     */
    public static File createTmpFile(InputStream inputStream, String name, String ext, File tmpDirFile)
            throws IOException {
        File resultFile = File.createTempFile(name, '.' + ext, tmpDirFile);
        resultFile.deleteOnExit();
        FileUtils.copyToFile(inputStream, resultFile);
        return resultFile;
    }

    /**
     * byte数组转文件类
     * @param bytes         输入数组
     * @param fileType      文件类型
     * @return              结果
     * @throws IOException  可能产生的异常
     */
    public static File bytesToFile(byte[] bytes, String fileType) throws IOException {
        return createTmpFile(new ByteArrayInputStream(bytes),
                UUID.randomUUID().toString(),
                fileType,
                Files.createTempDirectory("tempFile").toFile());
    }

    /**
     * 测试用Main方法
     * @param args  args
     */
    public static void main(String[] args) {
        File file = null;
        try {
            file = FileUtil.bytesToFile(new byte[1024], "jpg");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (file != null) {
                boolean delete = file.delete();
                System.out.println(delete);
            }
        }
    }
}

